// 防止i18n-replace批量转换一些地方处理不对，手动替换
// 运行：node replaceScript.js

const fs = require('fs');
const path = require('path');

// 定义要处理的文件夹路径
const folderPath = 'src/components';

// 定义多个要匹配和替换的值
const replaceRules = [
  // {
  //   oldValue: 'name:\\s*\\{(`[^`]*`)}',
  //   newValue: 'name: $1',
  // },
  {
    oldValue: 'name:\\s*\\{([^}]*)\\}',
    newValue: 'name: $1',
  },
];

// 递归函数，处理文件夹下的所有文件
function replaceInFiles(folderPath) {
  // 读取文件夹中的所有文件和子文件夹
  fs.readdir(folderPath, (err, files) => {
    if (err) {
      console.error(`读取文件夹错误: ${err}`);
      return;
    }

    files.forEach(file => {
      const filePath = path.join(folderPath, file);
      fs.stat(filePath, (err, stats) => {
        if (err) {
          console.error(`获取文件状态错误: ${err}`);
          return;
        }

        if (stats.isDirectory()) {
          // 如果是子文件夹，递归处理
          replaceInFiles(filePath);
        } else if (stats.isFile()) {
          // 如果是文件，执行替换操作
          fs.readFile(filePath, 'utf8', (err, data) => {
            if (err) {
              console.error(`读取文件错误: ${err}`);
              return;
            }

            let modified = false;

            // 对每一个替换规则执行替换操作
            replaceRules.forEach(rule => {
              const { oldValue, newValue } = rule;
              const regex = new RegExp(oldValue, 'g');
              const result = data.replace(regex, newValue);

              if (result !== data) {
                data = result; // 更新文件内容为替换后的内容
                modified = true;
                console.log(`成功将旧值 ${oldValue} 替换成 ${newValue}，文件：${filePath}`);
              }
            });

            // 如果有替换操作发生，则写回文件
            if (modified) {
              fs.writeFile(filePath, data, 'utf8', err => {
                if (err) {
                  console.error(`写入文件错误: ${err}`);
                  return;
                }
              });
            }
          });
        }
      });
    });
  });
}

// 开始处理文件夹下的所有文件
replaceInFiles(folderPath);